/**
  ******************************************************************************
  * @file    event.h 
  * @author  Yun
  * @version V1.3.0
  * @date    2025-02-21
  * @brief   事件管理模块头文件
  * @license EULA (End User License Agreement)
  *          Copyright (c) 2025 星瑜科技自动化 Co., Ltd. All rights reserved.
  ******************************************************************************
  */
#ifndef EVENT_H
#define EVENT_H

/*---------------------- Includes ----------------------*/
#include "event_cfg.h"

/*---------------------- 类型定义 ----------------------*/
/**
  * @brief 事件回调函数类型
  */
typedef void (*Event_Callback_TypeDef)(void* args);

/*---------------------- 函数声明 ----------------------*/
/**
  * @brief 事件初始化
  * @return 1:初始化成功 0:初始化失败
  */
uint8_t Event_Init(void);

/**
  * @brief 事件注册
  * @param pDevice 关联设备指针
  * @param u8EvtId 事件ID
  * @param u8EvtPri 事件优先级 0-255
  * @param pfnCallback 事件回调函数
  * @return 1:注册成功 0:注册失败
  */
uint8_t Event_Register(void* pDevice,
                       uint8_t u8EvtId,
                       uint8_t u8EvtPri,
                       Event_Callback_TypeDef pfnCallback);

/**
  * @brief 事件队列入队
  * @param u8EvtId 事件ID
  * @param pDevice 关联设备指针
  * @param pArgs 事件参数指针
  * @return 1:入队成功 0:入队失败
  */
uint8_t Event_Queue_Push(uint8_t u8EvtId,
                         void* pDevice,
                         void* pArgs);

/**
  * @brief 事件扫描
  * @return 无
  */
void Event_Monitor(void);

#endif //EVENT_H
